<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<title>htpasswd - 管理用于基本认证的用户文件 － Apache 2.2 中文手册 [金步国]</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p><p class="apache">Apache HTTP Server 版本2.2</p><img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path"><a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">HTTP Server</a> &gt; <a href="https://httpd.apache.org/docs/">文档</a> &gt; <a href="../index.html">版本2.2</a> &gt; <a href="index.html">支持程序</a></div>

<div id="translation-info">　　 <a href="../translator_announcement.html#thanks">致谢</a> | 本篇译者：<a href="../../../index.html">金步国</a>(<a href="../../../index.html">作品集</a>) | 本页最后更新：2006年10月20日</div>
<div id="page-content"><div id="preamble"><h1>htpasswd - 管理用于基本认证的用户文件</h1>


    <p><code>htpasswd</code>建立和更新用于基本认证的存储用户名/密码的文本文件。如果<code>htpasswd</code>不能读写此文件，它返回一个出错代码，而不做任何修改。</p>

    <p>服务器上的资源可以被限制为仅允许由<code>htpasswd</code>建立的文件中的用户所访问。此程序只能管理存储在文本文件中的用户名和密码，但是它可以加密并显示密码信息，从而可以为其他数据存储类型所利用。要使用DBM数据库，请参见<code class="program"><a href="dbmmanage.html">dbmmanage</a></code> 。</p>

    <p><code>htpasswd</code>使用专为Apache作了修改的MD5算法或系统函数<code>crypt()</code>加密密码。<code>htpasswd</code>所管理的文件可以包含两种类型的密码；有些用户的密码使用MD5加密的，而同一个文件中的其他用户密码则使用<code>crypt()</code>加密。</p>

    <p>本手册页仅列出命令行参数，配置基本认证的相关指令的细节请参见<code class="program"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>文档。</p>
</div>
	<div class="top"><a href="htpasswd.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="synopsis" id="synopsis">语法</a></h2>
    <p><code><strong>htpasswd</strong>
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> ]
    [ -<strong>D</strong> ] <var>passwdfile</var> <var>username</var></code></p>

    <p><code><strong>htpasswd</strong> -<strong>b</strong>
    [ -<strong>c</strong> ]
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>p</strong> |
      -<strong>s</strong> ]
    [ -<strong>D</strong> ]  <var>passwdfile</var> <var>username</var>
    <var>password</var></code></p>

    <p><code><strong>htpasswd</strong> -<strong>n</strong>
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>s</strong> |
      -<strong>p</strong> ] <var>username</var></code></p>

    <p><code><strong>htpasswd</strong> -<strong>nb</strong>
    [ -<strong>m</strong> |
      -<strong>d</strong> |
      -<strong>s</strong> |
      -<strong>p</strong> ] <var>username</var> <var>password</var></code></p>
</div><div class="top"><a href="htpasswd.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="options" id="options">选项</a></h2>
    <dl>
    <dt><code>-b</code></dt>
    <dd>使用批处理方式。也就是直接从命令行获取密码而不进行提醒。使用这个选项需要特别注意，因为命令行中的密码是<strong>清晰可见</strong>的。</dd>

    <dt><code>-c</code></dt>
    <dd>创建<var>passwdfile</var>文件。如果<var>passwdfile</var>已经存在，那么将被清空并改写。该选项不能和 <code>-n</code> 同时使用。</dd>

    <dt><code>-n</code></dt>
    <dd>在标准输出上显示结果而不是更新文件。用于生成可以为Apache非文本输出存储格式所接受的密码记录。这个选项改变了命令行语法，因为<var>passwdfile</var>参数(通常是第一个)被忽略了。该选项不能和 <code>-c</code> 同时使用。</dd>

    <dt><code>-m</code></dt>
    <dd>使用MD5加密密码。在Windows, Netware, TPF上这是默认方法。</dd>

    <dt><code>-d</code></dt>
    <dd>使用<code>crypt()</code>对密码进行加密。在Windows, Netware, TPF以外的平台上这是默认方法。虽然有可能在所有的平台上被<code>htpasswd</code>支持，但是在Windows, Netware, TPF上，该方法不能被<code class="program"><a href="httpd.html">httpd</a></code>所支持。</dd>

    <dt><code>-s</code></dt>
    <dd>使用 SHA 对密码进行加密。这种方法易于通过LDAP目录交换格式和Netscape server进行交换。</dd>

    <dt><code>-p</code></dt>
    <dd>使用明文密码(不加密)。虽然<code>htpasswd</code>在所有平台上都支持这种方法，但是<code class="program"><a href="httpd.html">httpd</a></code>只能在Windows, Netware, TPF上支持这种方法。</dd>

    <dt><code>-D</code></dt>
    <dd>如果<code><var>username</var></code>存在于<code><var>passwdfile</var></code>中，则删除该用户。</dd>

    <dt><code><var>passwdfile</var></code></dt>
    <dd>包含用户名和密码的文本文件的名称。如果使用了 <code>-c</code> 选项，若文件已存在则更新它，若不存在则创建它。</dd>

    <dt><code><var>username</var></code></dt>
    <dd>在<var>passwdfile</var>中添加或更新记录。若<var>username</var>不存在则添加一条记录，若存在则更新其密码。</dd>

    <dt><code><var>password</var></code></dt>
    <dd>将被加密并存储到文件中的明文密码。必须和 <code>-b</code> 同时使用。</dd>
    </dl>
</div><div class="top"><a href="htpasswd.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="exit" id="exit">返回值</a></h2>
    <p><code>htpasswd</code>仅在用户名和密码被成功存入<var>passwdfile</var>或成功更新的情况下返回"<code>0</code>"。若访问文件发生错误则返回"<code>1</code>"；若命令行语法错误则返回"<code>2</code>"；若密码验证失败则返回"<code>3</code>"；若正在进行中的操作被打断则返回"<code>4</code>"；若值(username, filename, password, 计算结果)长度超标则返回"<code>5</code>"；若用户名包含非法字符(参见<a href="htpasswd.html#restrictions">限制</a>)则返回"<code>6</code>"；若指定的文件不能被正确识别则返回"<code>7</code>"。</p>
</div><div class="top"><a href="htpasswd.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="examples" id="examples">示例</a></h2>
    <div class="example"><p><code>
      htpasswd /usr/local/etc/apache/.htpasswd-users jsmith
    </code></p></div>

    <p>添加或修改用户<code>jsmith</code>的密码。密码将被提示输入。在Windows平台上，密码将使用Apache修改过的MD5算法进行加密；在其它平台上将使用<code>crypt()</code>进行加密。如果指定的文件不存在，<code>htpasswd</code>将只返回一个错误代码，而不做其它任何事。</p>

    <div class="example"><p><code>
      htpasswd -c /home/doe/public_html/.htpasswd jane
    </code></p></div>

    <p>创建一个新文件并在其中添加一条用户<code>jane</code>的记录。密码将被提示输入。如果文件存在但是不能被读取或写入，则不会有任何记录被修改，同时<code>htpasswd</code>将会显示一个错误信息并返回一个错误代码。</p>

    <div class="example"><p><code>
      htpasswd -mb /usr/web/.htpasswd-all jones Pwd4Steve
    </code></p></div>

    <p>将来自命令行的密码(<code>Pwd4Steve</code>)使用MD5算法加密，并将其存入指定的文件。</p>
</div><div class="top"><a href="htpasswd.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="security" id="security">安全方面的考虑</a></h2>
    <p>Web密码文件(比如由<code>htpasswd</code>管理)<em>不应当</em>存在于网络空间中，即不能被客户端有机会访问。</p>

    <p>我们反对使用 <code>-b</code> 选项，因为密码将以明文的形式出现在命令行中。</p>
</div><div class="top"><a href="htpasswd.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="restrictions" id="restrictions">限制</a></h2>
    <p>在Windows和MPE平台上，用<code>htdbm</code>加密的密码最大长度是<code>255</code>字符。超出部分将被截断。</p>

    <p><code>htdbm</code>使用的MD5加密算法已经被Apache修改过了，仅能够被Apache识别，不能被其它Web服务器识别。</p>

    <p>用户最大长度是<code>255</code>字节，并且不能包含冒号(<code>:</code>)。</p>
</div></div>
<div id="footer">
<p class="apache">本文允许自由的转载、引用、再分发，但必须保留译者署名并注明出处；详见：<a href="../translator_announcement.html#announcement">版权声明</a>。</p>
<p class="menu"><a href="../mod/index.html">模块索引</a> | <a href="../mod/directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p></div>
</body></html>
